/*
 * Copyright (C), 2020, 安徽艾伦家居饰品有限公司
 * FileName: CommonMetaObjectHandler
 * Author:   Allen
 * Date:     2020/8/12 15:50
 * Description: 统一处理创建时间与更新时间的Handler
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.haoyu.auth.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * 〈统一处理创建时间与更新时间的Handler〉
 * 此处的fieldName需要使用DO对象中的名称，而不是数据库字段名
 * @author Allen
 * @date 2020/8/12
 * @since 1.0.0
 */
@Component
public class AuthMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime",  LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "status", Boolean.class, true);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        //mybatisPlus为3.3以下版本需增加metaObject.setValue为空，当原字段有值时不会覆盖，本项目使用3.4.1已无此BUG
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
}
